ক্লেইম ভিত্তিক Authorization

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core) ASP.NET Core Authentication এবং Authorization |
225
225

ক্লেইম ভিত্তিক Authorization হলো ASP.NET Core-এর একটি উন্নত নিরাপত্তা ফিচার, যা ব্যবহারকারীর পরিচয় এবং তাদের অধিকার যাচাই করতে ক্লেইম (Claims) ব্যবহার করে। ক্লেইম একটি কী-ভ্যালু জোড়া, যা ব্যবহারকারীর কিছু নির্দিষ্ট বৈশিষ্ট্য বা অনুমতি প্রকাশ করে। উদাহরণস্বরূপ, Role, Email, Department বা Permission ক্লেইম হতে পারে।

ASP.NET Core-এ ক্লেইম ভিত্তিক Authorization ব্যবহার করে নির্দিষ্ট ক্লেইমযুক্ত ব্যবহারকারীদের অ্যাক্সেস প্রদান করা হয়। এটি Policy-based Authorization এর মাধ্যমে বাস্তবায়ন করা হয়।


ক্লেইম এবং Authorization কীভাবে কাজ করে

  1. ক্লেইম যোগ করা:
    একটি ব্যবহারকারীর জন্য বিভিন্ন ক্লেইম যোগ করা হয়, যা তাদের পরিচয় এবং অনুমতি নির্ধারণ করে।
  2. পলিসি তৈরি করা:
    একটি পলিসি তৈরি করা হয়, যা নির্দিষ্ট ক্লেইমের ভিত্তিতে ব্যবহারকারীর অ্যাক্সেস নির্ধারণ করে।
  3. অ্যাক্সেস কন্ট্রোল:
    Controller বা Action-এ পলিসি প্রয়োগ করে নির্ধারণ করা হয়, কোন ব্যবহারকারীর অ্যাক্সেস থাকবে।

ক্লেইম যোগ করার পদ্ধতি

Authentication Middleware-এ ক্লেইম যোগ করা

যখন ব্যবহারকারী সাইন ইন করে, তখন তাদের পরিচয়ের সাথে ক্লেইম যুক্ত করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ClaimsIdentity ব্যবহার করা হয়েছে:

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, "John Doe"),
    new Claim(ClaimTypes.Role, "Admin"),
    new Claim("Department", "HR")
};

var identity = new ClaimsIdentity(claims, "CustomAuth");
var principal = new ClaimsPrincipal(identity);

await HttpContext.SignInAsync(principal);

এখানে, ClaimTypes.Role এবং কাস্টম ক্লেইম Department ব্যবহার করে একটি পরিচয় তৈরি করা হয়েছে।


ক্লেইম ভিত্তিক পলিসি তৈরি করা

ASP.NET Core-এ ক্লেইম ভিত্তিক পলিসি তৈরি করতে হলে AddAuthorization মেথডে পলিসি যোগ করতে হবে।

উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("HROnly", policy =>
            policy.RequireClaim("Department", "HR"));
    });

    services.AddControllersWithViews();
}

উপরের উদাহরণে, HROnly পলিসিটি এমন ব্যবহারকারীদের জন্য প্রযোজ্য, যাদের ক্লেইম Department এর মান "HR"।


ক্লেইম ভিত্তিক পলিসি প্রয়োগ করা

Controller বা Action-এ পলিসি প্রয়োগ করা:

[Authorize(Policy = "HROnly")]
public IActionResult HRDashboard()
{
    return View();
}

এখানে, শুধুমাত্র "HR" বিভাগে থাকা ব্যবহারকারীরাই HRDashboard অ্যাক্সেস করতে পারবে।

Runtime-এ পলিসি যাচাই করা:

public async Task<IActionResult> CheckPolicy()
{
    var result = await _authorizationService.AuthorizeAsync(User, null, "HROnly");

    if (result.Succeeded)
    {
        return View("Success");
    }
    else
    {
        return View("AccessDenied");
    }
}

একাধিক ক্লেইম চেক করা

ASP.NET Core-এ একাধিক ক্লেইম চেক করতে হলে, পলিসিতে একাধিক শর্ত যোগ করা যেতে পারে।

উদাহরণ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("AdminAndHR", policy =>
            policy.RequireClaim(ClaimTypes.Role, "Admin")
                  .RequireClaim("Department", "HR"));
    });
}

উপরের পলিসিটি এমন ব্যবহারকারীদের অনুমতি দেয়, যারা Admin রোলধারী এবং একইসাথে HR বিভাগে কাজ করে।


কাস্টম ক্লেইম পলিসি হ্যান্ডলার

ক্লেইম চেক করার জন্য একটি Custom Policy Handler তৈরি করা যেতে পারে, যা জটিল শর্তাবলী যাচাই করতে সহায়তা করে।

কাস্টম হ্যান্ডলার তৈরি:

public class MinimumExperienceHandler : AuthorizationHandler<MinimumExperienceRequirement>
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MinimumExperienceRequirement requirement)
    {
        var experienceClaim = context.User.FindFirst("Experience");

        if (experienceClaim != null && int.Parse(experienceClaim.Value) >= requirement.MinimumYears)
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }
}

public class MinimumExperienceRequirement : IAuthorizationRequirement
{
    public int MinimumYears { get; }

    public MinimumExperienceRequirement(int years)
    {
        MinimumYears = years;
    }
}

হ্যান্ডলার এবং পলিসি রেজিস্টার:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Experienced", policy =>
            policy.Requirements.Add(new MinimumExperienceRequirement(5)));
    });

    services.AddSingleton<IAuthorizationHandler, MinimumExperienceHandler>();
}

সারসংক্ষেপ

ক্লেইম ভিত্তিক Authorization ASP.NET Core-এর একটি শক্তিশালী ফিচার, যা ব্যবহারকারীর নির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে অ্যাক্সেস নিয়ন্ত্রণ করে। এর মাধ্যমে:

  • ব্যবহারকারীদের নির্দিষ্ট ক্লেইম অনুযায়ী পলিসি প্রয়োগ করা যায়।
  • কাস্টম শর্তাবলী চেক করার জন্য কাস্টম হ্যান্ডলার তৈরি করা যায়।

ক্লেইম ভিত্তিক Authorization ব্যবহার করে আপনি নিরাপত্তা নিশ্চিত করার পাশাপাশি অ্যাপ্লিকেশনে নমনীয় অ্যাক্সেস কন্ট্রোল মডেল তৈরি করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion